package utils

import (
	"crypto/md5"
	"fmt"
	"io"
	"time"
)

// InArray 类似php的in_array()
func InArray(items []string, item string) bool {
	for _, eachItem := range items {
		if eachItem == item {
			return true
		}
	}
	return false
}

// ArrayUniqueAndFilter 切片去除重复并且去空
func ArrayUniqueAndFilter(items []string) []string {
	result := make([]string, 0, len(items))
	temp := map[string]struct{}{}
	for _, item := range items {
		if item == "" {
			continue
		}
		if _, ok := temp[item]; !ok { //如果字典中找不到元素，ok=false，!ok为true，就往切片中append元素。
			temp[item] = struct{}{}
			result = append(result, item)
		}
	}
	return result
}

// If 三目运算符
func If(condition bool, trueVal, falseVal interface{}) interface{} {
	if condition {
		return trueVal
	}
	return falseVal
}

// TimeFormat 时间格式化，如果是0值时间（0000-00-00 00:00:00）则返回空
func TimeFormat(timeVal time.Time) string {
	if timeVal.IsZero() {
		return ""
	}
	return timeVal.Format("2006-01-02 15:04:05")
}

// GetTimeStamp 获取时间戳
func GetTimeStamp(time time.Time) string {
	month := time.Format("01")
	day := time.Format("02")
	hour := time.Format("15")
	min := time.Format("04")
	second := time.Format("05")
	return month + day + hour + min + second
}

// MD5Str MD5加密字符串
func MD5Str(str string) string {
	w := md5.New()
	_, _ = io.WriteString(w, str)
	//将str写入到w中
	md5str2 := fmt.Sprintf("%x", w.Sum(nil))
	return md5str2
}
